MySQL IF THEN 在 WHERE 子句中
全部标签 关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:StackOverflowquestionchecklist关闭8年前。Improvethisquestion我是SQL的新手,阅读了很多资料,它只是告诉我改用HAVING。是否有更深的债务解决方案或替代方案的原因?另外,在HAVING子句中使用聚合函数不是错误吗?这与在where子句中使用one有何不同?
我想我在这方面的努力超出了我应有的程度。我有这个简单的查询:SELECT*FROMopening_hoursWHEREday_id=3ORday_idISNULL这将给我所有在day_id列中同时具有3和NULL的行,如果找不到3,它将仅提供具有NULL的行。如果找到3,我如何排除具有NULL的行,如果找不到3,我如何将具有NULL的行给我?有没有一种方法可以在一个查询中执行此操作?我也尝试过XOR,它将只给出找到3的行,但如果没有,则没有。 最佳答案 一种可能的方式:SELECT*FROMopening_hoursWHERECAS
在MySQL中,我观察到在SELECT列表中使用AGGREGATEFUNCTION的语句得到执行,尽管没有GROUPBY子句。如果我们这样做,其他RDBMS产品(如SQLServer)会抛出错误。例如,SELECTcol1,col2,sum(col3)FROMtbl1;执行时没有任何错误,并返回col1、col2的第一行值和col3所有值的总和。上述查询的结果是单行。谁能告诉我为什么MySQL会发生这种情况?提前致谢! 最佳答案 这是设计使然-它是MySQL允许的标准的众多扩展之一。对于像SELECTname,MAX(age)FRO
我遇到了从数据库中选择的问题。基本上我想要实现的是:我有一个包含3列的表格type|number|date我需要根据列(类型)在哪里做If(type=1)thenwherenumber>1elsewheredatetoday()因此,如果类型等于1,则应用编号,否则应用日期。有可能做这样的事情吗?可以用LaravelEloquent做到吗?谢谢。原始查询和数据类型为:type=stringnumber=integerdate=timestamp(Y-m-dH:i:s)查询SELECT*FROMtable_nameWHERECASEWHENtype=daysTHENdate>now()E
我有一个名为message的表。只有当person_send_id和person_receive_id不同时,我才尝试从表中选择消息。我能够正确选择person_send_id和person_receive_id。但是,我不知道如何选择消息。我正在考虑在Select中使用Select,但我不知道如何实现它或者它是否是正确的实现方式。SELECTDISTINCTperson_send_id,person_receive_idFROM`message`WHEREperson_send_id=21ORperson_receive_id=21//ANDSELECTmessageFROM`mes
谁能告诉我为什么我会收到此错误以及如何修复它。$lastDayPreviousMonth=date("Y-m-d",strtotime("lastdayofpreviousmonth"));$firstDayPreviousMonth=date("Y-m-d",strtotime("firstdayofpreviousmonth"));$query=DB::table('employees')->where('Emp_ClientId','=',$clientId)->where('Emp_StatusId',1)->orWhere(function($query,$firstDayP
我有以下SQL表(在MySQL中):students+-----+------------+|id|first_name|+-----+------------+|01|John|+-----+------------+|02|Jane|+-----+------------+|03|Peter|+-----+------------+academics+-----+-----------+----------+------+|id|year_start|year_end|status|+-----+-----------+----------+------+|10|2016|2017
我有以下数据库设计。产品+----+----------------------------------+|id|name|+----+----------------------------------+|1|Product1,Intel,Celeron,N3350||2|Product2,Intel,Celeron,N3350||3|Product3,Intel,i5,8250U||4|Product4,Intel,i9,8950HK||5|Product5,Intel,i9,8950HK|+----+----------------------------------+属性+--
这个问题在这里已经有了答案:1064errorinCREATETABLE...TYPE=MYISAM(5个答案)关闭9年前。我收到这个错误:CREATETABLE`libro`(`id`INTEGERNOTNULLAUTO_INCREMENT,`autor_id`INTEGER(11),`titulo`VARCHAR(255),`paginas`VARCHAR(255)NOTNULL,PRIMARYKEY(`id`),INDEX`libro_FI_1`(`autor_id`),CONSTRAINT`libro_FK_1`FOREIGNKEY(`autor_id`)REFERENCES`
我正在编写一些SQL并使用AdoDb连接到我的数据库并运行查询等。我正在使用参数化查询,但遇到了问题。它们是一种将值数组传递给AdoDb/MySql中的in_clause以进行参数化的方法。我的问题是,如果我将准备好的字符串作为参数传递,即'test','test2','test3'它不起作用,因为库或数据库会自动转义它并添加外部开头和结尾的引号,因此所有内部引号都会自动转义,因此查询在查找'\'test\',\'test2\',\'test3\''时不返回任何内容而不是我喂它的东西。更新了另一种可能的方法来实现这一点Param('first_names').")"$stmt=$DB-